package com.itheima.admin.controller;

import com.itheima.admin.util.Result;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

@RestController
public class FileController {
    @PostMapping("/upload")
    public Result upload(MultipartFile file){
        String filename = file.getOriginalFilename();
        try {
            file.transferTo(new File("D:\\images\\"+filename));
        }catch (Exception e){
            return Result.error("上传照片失败");
        }
       return Result.success(200,"上传照片成功",filename);
    }


    @GetMapping("/download")
    public ResponseEntity<byte[]> testResponseEntity(String filename) throws IOException {
        //创建输入流
        InputStream is = new FileInputStream("D:\\images\\"+filename);
        //创建字节数组
        byte[] bytes = new byte[is.available()];
        //将流读到字节数组中
        is.read(bytes);
        //创建HttpHeaders对象设置响应头信息
        MultiValueMap<String, String> headers = new HttpHeaders();
        //设置要下载方式以及下载文件的名字
        headers.add("Content-Disposition", "attachment;fileName="+filename);
        //设置响应状态码
        HttpStatus statusCode = HttpStatus.OK;
        //创建ResponseEntity对象
        ResponseEntity<byte[]> responseEntity = new ResponseEntity<>(bytes, headers, statusCode);
        //关闭输入流
        is.close();
        return responseEntity;
    }
}
